package yifeng.javabasic;


/**
 * 其实有部分操作对于程序员是透明的，那是JAVA语言开发者的小把戏，在定义a和b 时JVM(JAVA虚拟机)做了程序员看
 * 不到的操作，他将b拷贝了一份给局部内部类，也就是说JVM在局部内部类中定义了一个final int b=20；
 * 这个操作程序员是不知道的！当调用m1()方法时输出的20并不是原来outer()方法中定义的b，
 * 而仅仅是JVM拷贝的一个副本。那么为什么a没被打印出呢？那是因为JVM并没有拷贝它，因为没有final修饰，
 * 说明它可以被修改，如果把a 改为 a++，此时JVM就不知道拷贝a还是a++了，所以对于无final修饰的局部变
 * 量JVM是不会拷贝传给局部内部类的，自然无法打输出！
 * @author pengyifeng
 *
 */
public class InnerClassExp3 {
	final String name;
	
	public InnerClassExp3(String name) {
		super();
		this.name = name;
	}


	public InnerClassExp3() {
		// TODO Auto-generated constructor stub
		name = "";
	}


	public void test1(){
		final int i = 1;
	}
	
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		 int i;
//		System.out.println(i);
		i = 1;
		
//		class A{
//			public A() {
//				super();
//				System.out.println(i);
//			}
//			
//		}
		
		@SuppressWarnings("unused")
		InnerClassExp3 ice = new InnerClassExp3();
//		ice.name = "";
		
	}

}
